#pragma once

#include <QObject>

class QIcon;
class QString;
class QWidget;

class AbstractPlugin:public QObject
{
    Q_OBJECT
public:
    AbstractPlugin(QObject*parent=nullptr);
    virtual ~AbstractPlugin();

    virtual QString minimalVerisonRequest();
    virtual QString pluginGroup();

    // Base
    virtual int order() = 0;
    virtual QString pluginInternalName() = 0;
    virtual QString pluginName() = 0;
    virtual QString pluginVersion() = 0;
    virtual QString pluginSummary() = 0;
    virtual QString pluginDescription() = 0;
    virtual QIcon pluginIcon() = 0;
    virtual QWidget* createWidget() = 0;
};
